home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / test / Test.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-29  |  2.5 KB  |  117 lines

  1. /* ---------------------------------------------- */
  2. /* BCC header. Inserted into every generated file */
  3. /* ---------------------------------------------- */
  4.  
  5. #ifndef _BCC_EVERY
  6. #define _BCC_EVERY
  7.  
  8. /* Includes necessary for every mui c code */
  9.  
  10. #include <proto/exec.h>
  11. #include <proto/muimaster.h>
  12. #include <libraries/mui.h>
  13.  
  14. #include <mui/muiextra.h>
  15.  
  16. #include <string.h>
  17.  
  18. /* defines that help adjusting to any compiler */
  19.  
  20. #ifdef _DCC
  21.     #define REG(x) __ ## x
  22.     #define ASM
  23.     #define SAVEDS __geta4
  24. #else
  25.     #define REG(x) register __ ## x
  26.  
  27.     #ifdef _STORM
  28.  
  29.             #define ASM
  30.             #define SAVEDS __saveds
  31.  
  32.     #else
  33.  
  34.         #if defined __MAXON__ || defined __GNUC__
  35.             #define ASM
  36.             #define SAVEDS
  37.         #else
  38.             #define ASM    __asm
  39.             #define SAVEDS __saveds
  40.         #endif
  41.     
  42.     #endif
  43.  
  44. #endif
  45.  
  46. #define CallSuper() DoSuperMethodA(cl, obj, msg)
  47. #define value (tag->ti_Data)
  48. #define GetData() INST_DATA(cl, obj)
  49.  
  50. #endif
  51. #include "Test.h"
  52.  
  53.  
  54.  
  55.  
  56. unsigned long mTestBlee( struct IClass *cl, Object *obj, Msg msg )
  57. {
  58.  unsigned long _ret = 1;
  59.  TestData *data = INST_DATA( cl, obj );
  60.  /* UC Beg */
  61.  
  62.     data->p = (data->p);
  63.     
  64.     DoMethod( data->next, BOPM_Test_Blee , 20, 60, 13 );
  65.  
  66.  /* UC End */
  67. Blee_exit:
  68. return _ret;
  69. }
  70.  
  71. /* BOP - Test class dispatcher */
  72.  
  73. unsigned long mTestBlee( struct IClass *cl, Object *obj, Msg msg );
  74.  
  75. static unsigned long mTestOM_SET( struct IClass *cl, Object *obj, struct opSet *msg )
  76. {
  77.  TestData *data = INST_DATA(cl, obj);
  78.  struct TagItem *tags, *tag;
  79.     for( tags = msg->ops_AttrList; tag = NextTagItem(&tags); ) {
  80.         switch( tag->ti_Tag ) {
  81.             case BOPA_Test_next: *((unsigned long*)&data->next) = value; break;
  82.         }
  83.     }
  84.  return DoSuperMethodA( cl, obj, (Msg)msg );
  85. }
  86.  
  87. static unsigned long mTestOM_GET( struct IClass *cl, Object *obj, struct opGet *msg )
  88. {
  89.  TestData *data = INST_DATA(cl, obj);
  90.  ULONG tag = msg->opg_AttrID;
  91.     switch( tag ) {
  92.             case BOPA_Test_next: *msg->opg_Storage = (unsigned long)data->next; break;
  93.     }
  94.  return DoSuperMethodA( cl, obj, (Msg)msg );
  95. }
  96.  
  97. static unsigned long SAVEDS ASM Test_Dispatcher( REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg )
  98. {
  99.     switch( msg->MethodID ) {
  100.         case BOPM_Test_Blee: return mTestBlee( cl, obj, (Msg)msg );
  101.         case OM_SET: return mTestOM_SET( cl, obj, (struct opSet*)msg );
  102.         case OM_GET: return mTestOM_GET( cl, obj, (struct opGet*)msg );
  103.     }
  104.     return( DoSuperMethodA( cl, obj, msg ) );
  105. }
  106.  
  107. struct IClass *Test_Create( void )
  108. {
  109. struct IClass *cl;
  110.     if( cl = MakeClass( NULL, "rootclass", NULL, sizeof( TestData ), 0 ) ) {
  111.         cl->cl_Dispatcher.h_Entry = (ULONG (*)())Test_Dispatcher;
  112.         cl->cl_Dispatcher.h_SubEntry = NULL;
  113.         return cl;
  114.     }
  115.     return 0;
  116. }
  117.